package com.yunji.base.service;


import com.yunji.base.bo.StaffSiteRemoveBO;
import com.yunji.base.dao.IStaffSiteDao;
import com.yunji.base.domain.StaffSiteDO;
import com.yunji.base.dto.StaffSiteQueryDTO;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Description: 员工站点关联Service业务层处理$
 * @Author: HuaAo
 * @Date: 2024-04-03$
 */
@Service
public class StaffSiteService {
    @Resource
    private IStaffSiteDao staffSiteDao;

    /**
     * 查询员工站点关联列表
     *
     * @return 员工站点关联
     */

    public List<StaffSiteDO> search(StaffSiteQueryDTO bo) {
        return staffSiteDao.listByQuery(bo);
    }

    /**
     * @param id 绑定关系ID
     * @Title select
     * @Desc 查询员工站点绑定关系
     * @Date 2024-05-29 11:57:54.117
     * @Return StaffSite 员工站点绑定关系
     */

    public StaffSiteDO select(Long id) {
        return staffSiteDao.getById(id);
    }

    /**
     * @param staffSite 员工站点绑定关系
     * @Title create
     * @Desc 创建员工站点绑定关系
     * @Date 2024-05-29 11:58:45.802
     * @Return boolean 创建结果
     */

    public boolean create(StaffSiteDO staffSite) {
        return staffSiteDao.save(staffSite);
    }

    /**
     * @param staffSite 员工站点绑定关系
     * @Title update
     * @Desc 更新员工站点绑定关系
     * @Date 2024-05-29 12:00:21.328
     * @Return boolean 更新结果
     */

    public boolean update(StaffSiteDO staffSite) {
        return staffSiteDao.updateById(staffSite);
    }

    public boolean remove(StaffSiteRemoveBO bo) {
        return staffSiteDao.removeByBo(bo);
    }

    public boolean insertTStaffSiteByList(List<StaffSiteDO> list) {
        return staffSiteDao.saveBatch(list);
    }

    public Long[] selectStaffIdsBySiteId(Long id) {
        List<StaffSiteDO> staffSites = staffSiteDao.listBySiteId(id);
        return staffSites.stream().map(StaffSiteDO::getStaffId).toArray(Long[]::new);
    }

    public List<StaffSiteDO> listBySiteIds(List<Long> ids) {
        return staffSiteDao.listBySiteIds(ids);
    }

    public boolean deleteByStaffIds(List<Long> staffIds) {
        return staffSiteDao.removeByStaffIds(staffIds);
    }

    public boolean delete(List<Long> list) {
        return staffSiteDao.removeBatchByIds(list);
    }
}
